package com.mdd.admin.service.jiaz;

import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.distribution.*;
import com.mdd.common.core.PageResult;
import com.mdd.common.validate.engineer.*;
import com.mdd.common.vo.engineer.EngineerFansInfoVo;
import com.mdd.common.vo.engineer.EngineerFansListedVo;
import com.mdd.common.vo.engineer.EngineerStoreDetailVo;
import com.mdd.common.vo.engineer.EngineerStoreListedVo;

/**
 * 师傅服务接口类
 */
public interface IEngineerStoreService {

    /**
     * 师傅列表
     *
     * @param pageValidate   PageValidate
     * @param searchValidate EngineerStoreSearchValidate
     * @return PageResult<EngineerStoreListedVo>
     * @author lrc
     */
    PageResult<EngineerStoreListedVo> list(PageValidate pageValidate, EngineerStoreSearchValidate searchValidate);

    /**
     * 开通分销商
     *
     * @param openValidate EngineerStoreOpenValidate
     * @author mjf
     */
    void open(EngineerStoreOpenValidate openValidate);

    /**
     * 冻结/解冻
     *
     * @param id Integer
     * @author lrc
     */
    void freeze(Integer id);

    /**
     * 调整等级详情
     *
     * @param id Integer
     * @return DistributionAdjustLevelVo
     * @author mjf
     */
    DistributionAdjustLevelVo adjustLevelInfo(Integer id);

    /**
     * 调整等级
     *
     * @param adjustValidate EngineerAdjustLevelValidate
     * @author lrc
     */
    void adjustLevel(EngineerAdjustLevelValidate adjustValidate);

    /**
     * 师傅详情
     *
     * @param id Integer
     * @return EngineerStoreDetailVo
     * @author lrc
     */
    EngineerStoreDetailVo detail(Integer id);

    /**
     * 下级信息详情
     *
     * @param id Integer
     * @return EngineerFansInfoVo
     * @author lrc
     */
    EngineerFansInfoVo fansInfo(Integer id);

    /**
     * 下级列表
     *
     * @param pageValidate   PageValidate
     * @param searchValidate EngineerFansSearchValidate
     * @return PageResult<EngineerFansListedVo>
     * @author lrc
     */
    PageResult<EngineerFansListedVo> fansList(PageValidate pageValidate, EngineerFansSearchValidate searchValidate);

    /**
     * 调整上级
     *
     * @param adjustValidate EngineerAdjustLeaderValidate
     * @author lrc
     */
    void adjustLeader(EngineerAdjustLeaderValidate adjustValidate);

    /**
     * 更新分销会员等级
     *
     * @param userId Integer
     * @author mjf
     */
    void updateDistributionLevel(Integer userId);

    /**
     * 分销初始化数据
     *
     * @author mjf
     */
    void updateData();

}
